home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Pascal Super Library
/
Pascal Super Library (CW International)(1997).bin
/
LIBRARY
/
CFI_V607
/
CFIDOCEN.DOC
< prev
next >
Wrap
Text File
|
1993-01-04
|
34KB
|
711 lines
╔══════════════════════════════
║ TxCFI Compressed Files ┌─────────────────┐
║ Interface │ Member │────┐
╟────────────────────────────── │ of │░░░░│
║ (c) 1989 Robert W. van Hoeven │ │░░░░│
╟────────────────────────────── │ Badhoevedorpse │░░░░│
║ Release : 6.07 │ Pascal │░░░░│
║ Rel.Date: 10th August 1989 │ Programmeurs │░░░░│
╠══════════════════════════════ │ Collectief │░░░░│
║ └─────────────────┘░░░░│
║ │ T4CFI.TPU │░░░░░░░░░░░░░░░░░│
║ │ T5CFI.TPU └─────────────────┘
║ │ T55CFI.TPU ┌─────┐
║ │ CFITEST.PAS │░░░░░│
║ │ Changes marked with └──┬──┘
║ │ '|' at the start of ┌────┴────┐
║ │ the line !!!!!!!!!! ┌ ─ ─ ─ ─ ─ ─ ─││││││ ═══│─ ─ ─ ─ ─ ─ ─ ┐
║ └─────────┘
╠═══════════════════════════════ │ ┌─────┐ │ B │ ┌─────┐ │
║ Address: Robert W. van Hoeven │░░░░░│ │ P + P │ │░░░░░│
║ PO Box 131 │ └──┬──┘ │ C │ └──┬──┘ │
║ 1170 AC Badhoevedorp ┌────┴────┐ └───────┘ ┌────┴────┐
║ Nederland (NL) └ ─ ││││││ ═══│─ ─ ─ ─ ─ ─││││││ ═══│ ─ ┘
╚═══════════════════════════════ └─────────┘ └─────────┘
************************************************************************
* WARNING: The interface record has been changed. Total length is now *
* 8 bytes longer (than CFI 5.xx and lower) *
* WARNING: The PKZIP V 1.00 implementation is taken from the documents *
* in the beta version. If they change before PKZIP V 1.00 is *
* released, a new version of CFI will also be released !!!!! *
************************************************************************
Copyrights
───────────────────────────────────────────────────────────────
- The package is donated to Public Domain, excluding the source-
code for the units;
- THE AUTHOR OF THE PROGRAM SHALL NOT IN ANY CASE BE LIABLE FOR
SPECIAL, INCIDENTAL, CONSEQUENTIAL, INDIRECT OR OTHER SIMILAR
DAMAGES ARISING FROM USING THIS PROGRAM OR ITS FUNCTIONS.
- You may not make any changes or modifications to the program;
- You may make as many copies of the program and its extra files
as you like and distribute them to friends, but you have to supply
the package in its original form;
- When you should use the package, I should like it, when you send
me a postcard or a Netmail <tm> message. Only when getting enough
reactions, I will continue to support this package; .
- You may use the TxCFI.TPU file(s) in your own programs. When you
want to offer these program's to others, this can only be done in
the form of Public Domain programs and you have to include a
reference to the original CFI-package in your documentation;
- System Enhanced Assosiates (SEA) regard ARC as their trademark, but
SEA has indicated that Public Domain programs may process .ARC files
without notice;
Introduction to TxCFI.TPU
───────────────────────────────────────────────────────────────
The supplied UNIT's in this package are usefull when you want
to work with compressed files. I have supplied the following
interfaces:
- PKWare's ZIP-files (and old ARC versions)
- NoGate's PAK-files
- Sea's ARC-files
- R. Dhesi's ZOO-files
- H. Yoshi's LHZ-files or ICE-files
- M. Miki's LZS-files (also H. Okumura and K. Masuyama)
- Dean W. Cooper's DWC-files
The supplied UNIT uses the same routines, transparent from the fact
what type of compressed file you want to read, only the type of in-
formation you get back in your interface record is more or less de-
pendent on the type of compressed files.
Description of TxCFI.TPU
───────────────────────────────────────────────────────────────
This UNIT carries 6 functions, 1 procedure, 1 interface TYPE and
some variables. The latter you normaly don't use, exept when the
supplied compression-files don't confirm to the standard naming
conventions in the extension of the filename.
The interface between YOUR program and this UNIT lies in a pre-
defined record-type with the name 'CIRTyp' (CIR meens Compression
Interface Record).
The declaration of this TYPE is:
CIRTyp=RECORD
CIRAtr:BYTE;
{Contains the attribute of the current }
{compression method. }
{SEA 1 = stored }
{ 2 = stored }
{ 3 = packed }
{ 4 = Squeezed }
{ 5 = Crunched }
{ 6 = Crunched }
{ 7 = Crunched }
{ 8 = Crunched }
{PKWARE 9 = Squashed (only PkWare) }
{PAK 10 = Crushed (only NoGate) }
{ 11 = Distilled (only NoGate) }
{ 45 = PAK archive comment }
{ 46 = PAK file comment }
{ 47 = Path for file }
{ 48 = Security enveloppe }
{ 49 = Error Correction }
{ }
{ZIP Local 50 = stored }
{ 51 = Shrunk }
{ 52 = Reduced factor 1 }
{ 53 = Reduced factor 2 }
{ 54 = Reduced factor 3 }
{ 55 = Reduced factor 4 }
{ 56 = Imploding }
{ZIP C_Dir 80 = stored }
{ 81 = Shrunk }
{ 82 = Reduced factor 1 }
{ 83 = Reduced factor 2 }
{ 84 = Reduced factor 3 }
{ 85 = Reduced factor 4 }
{ 86 = Imploding }
{ZIP E_ZIP 99 = End of Central ZIP-Dir }
{ }
{ZOO 100 = Stored }
{ 101 = LWZ compression }
{ 150 = Stored (deleted) }
{ 151 = LWZ compression (deleted)}
{ }
{LZH/ICE 200 = Stored }
{ 201 = LZHufman compression }
{LZH/LZS 202 = LZS (LZH) -lz4- }
{ 203 = LSZ (LZH) -lz5- }
{LZS 230 = LZS -lz0- (??)* }
{ 231 = LZS -lz1- (??)* }
{ 232 = LZS -lz2- (??)* }
{ 233 = LZS -lz3- (??)* }
{ 249 = LZS -lz?- (??)* }
{ }
{DWC 250 = Stored }
{ 251 = Crunched }
CIRNam:STRING[12];
{Contains the filename (empty with types }
{45,46,99) }
CIRPth:STRING[80];
{Contains the (relative) path with ZIP and}
{ZOO and LZH/ICE, otherwise empty }
CIRExt:STRING;
{Contains empty string and is present for }
{future releases of PKZIP }
CIRDes:STRING;
{Contains empty string or the archive }
{description (types 45,46,99 and all ZOO) }
CIROSi:LONGINT;
{Original size of compressed file }
CIRASi:LONGINT;
{Compressed size of file }
CIRDTm:LONGINT;
{Contains creation date/time as a LONGINT }
{as found in a Pascal SearchRec }
CIRCRC:LONGINT;
{Contains CRC depending on compression or }
{the filenumber for a comment records in }
{PAK files. For PAK (attr 46) }
{0 : The comment for the whole PAK file }
{nn : The comment for the nn'th file in }
{ the PAK }
{The same goes for type 47. CRC contains }
{the filenumber the path belongs to }
CIRFAt:BYTE;
{Contains 0 or the fileatrribute of the }
{original file (only ZIP and LZH/ICE) }
CIRSPo:LONGINT;
{Absolute start (zero based) of the this }
{header in the compressed file }
CIRLen:LONGINT;
{Length (header included) of this file in }
{the compressed file }
CIRFl1:WORD;
{Optional bit-mapped flag. Only used for }
{ZIP-files this moment. When ZIP, this }
{bitmap contains the INTERNAL attribute ! }
{This bitmap is only available in central }
{directory entries. }
CIRFl2:WORD;
{Optional bit-mapped flag. Only used for }
{ZIP-files this moment. When ZIP, this }
{bitmap contains the general purpose flag }
END;
WARNING: When you process a file with the extension PAK, ARC
or PKA, the NEXT_CFL function can return a mixture
of types in the CIRAtr variable. When testing this
variable, please test every possible entry other-
wise your program will do 'strange' things. When
using this variable, you can best use a CASE with
an ELSE clause (look in the demo for an example) !
(*) NOTE:Current DOC's for LARC (V 3.33) are not available to
me. The headers are the same as Yoshi's LHarc program,
but only the values -lz4- and -lz5- (which you can al-
so process with LHARC.EXE) are known. The -lz0- to -lz3-
are only guesses.
The following CONST's are carried out to you:
HeapAl:BOOLEAN:FALSE;
{Toggle for external HEAP functions }
CFlSFX:BOOLEAN:FALSE;
{Toggle for SFX testing in TEST_CFL function}
CFlVer:STRING[10];
{The current version of TxCFl }
CFlCpy:STRING[80];
{The complete copyrights for the current }
{version }
DayMon:ARRAY[1..12] OF BYTE;
{A table with number of days iper month }
The following VAR's are carried out to you:
CFlFil:FILE;
{The FILE variable for the current file }
{NEVER do something with this variable !! }
CFlTyp:BYTE;
{The type of compression TxCFI has de- }
{tected (depending on the file extension) }
{0 = Invalid }
{1 = ARC/PAK/PKA }
{2 = ZIP }
{3 = ZOO }
{4 = LZH/ICE }
{5 = DWC }
{NEVER (and I mean NEVER) change this }
{variable (CFI will return invalid entries}
{or aborts ! Only use this variable as a }
{reference. }
CFlPos:LONGINT;
{The current position in the open file }
{NEVER, and I meen NEVER change this vari-}
{able in your program, strange things may }
{occur and TcCFI will (at least) not re- }
{turn valid entries to you }
ZIPALL:BOOLEAN;
{TRUE when all ZIP-types are wanted, FALSE}
{when only local-types are wanted (faster)}
{TxCFI will set this variable to TRUE by }
{default, before the call to Next_CFL you }
{can change the variable to FALSE. }
DWCNuE:INTEGER;
{This variable contains the total number }
{of entries in a DWC-file, AFTER the first}
{NEXT_CFL call. You can inspect this }
{variable, but you must NEVER change it ! }
DWCCuE:INTEGER;
{This variable contains the current entry }
{number in the DWC-file, AFTER every }
{NEXT_CFL call. You can inspect this }
{variable, but you must NEVER change it ! }
CFlOSi:LONGINT;
{This variable contains the total of the }
{original file-sizes in the compressed }
{file until now. You can inspect this }
{variable after every call to NEXT_CFl and}
{even after CLOS_CFL ! }
CFlASi:LONGINT;
{This variable contains the total of the }
{compressed file-sizes in the compressed }
{file until now. You can inspect this }
{variable after every call to NEXT_CFl and}
{even after CLOS_CFL ! }
{The number given is the REAL total of all}
{compressed files in this compression file}
{until now. It DOES NOT include headers }
{and other overhead bytes ! }
DaySav:BOOLEAN;
GMTDif:LONGINT;
{DWC make's usage of the C-library Time- }
{Zone variable (TZ= in the environment }
{block). CFI searches the environment and }
{places the difference between GMT and the}
{found TimeZone as seconds in GMTDif. When}
{a daylight saving component is found in }
{TZ, DaySav is set to TRUE (hence subtrac-}
{ting an hour). You can set DaySav to the }
{FALSE value yourself. }
TxCFI contains the following FUNCTION's and PROCEDURE's:
=======================================================================
FUNCTION Open_CFl(CFlNam:STRING):BOOLEAN;
Result : BOOLEAN
Input : The name of the compressed file and optional the drive
and path;
Description: Call this function to open the file, supplied in 'CFLNAM'
and let TxCFI work out the type of compression file de-
pending on the extension.
If the file does not exist, or has an invalid extension,
the function will return FALSE, otherwise the function
will return TRUE.
Remarks : OPEN_CFl sets the variables CflPos, CflFil and CflTyp.
OPEN_Cfl will also (re)set the working variables for
DWC-timedate stamps when opening a DWC-file. It will
look at the current values of GMTDif and DaySav and
create a difference out of these variables.
Never use this function for the second time if you have
not used Clos_CFL.
Remarks : See Test_CFL and Forc_CFL functions.
=======================================================================
FUNCTION Test_CFl(CFlNam:STRING):BYTE;
Result : BOOLEAN
Input : The name of the compressed file and optional the drive
and path;
Description: Call this function to open a file, supplied in 'CFLNAM'
and let TxCFI work out the type of compression file de-
pending on the INTERNAL file structure.
If the file does not exist, or has an invalid internal
format, the function will return 0, otherwise the func-
tion will return 1 (ARC), 2 (ZIP), 3 (ZOO), 4 (LZH) or
5 (DWC).
If there is not enough memory for HEAP functions (this
must be at least 20000 bytes), Test_CFL returns with
a value 255.
If the file is of type .COM or .EXE and CFlSFX is set
to FALSE (default) then these files are skipped. If the
boolean is set to TRUE before you call Test_CFl, this
function will test .COM and .EXE files for SFX-headers.
If the file is a SFX-file (Self Extracting Archive),
Test_CFL sets the starting location in the SFX-file
in the variable CFlPos, otherwise CFlPos is set to 0.
Remarks : Test_CFl opens the supplied file and reads the first
29 bytes. Depending on compression headers, the function
determines what kind of file it is working on. If the
file isn't a compressed file a 0 is returned, otherwise
the function returns a valid CFLTyp value (1,2,3,4,5).
When the file has an extension of .EXE or .COM, Test_CFL
will read the first 20000 bytes of the file to see if it
is a SFX-file. When this is the case, Test_CFl will re-
turn the correct CFLTyp value (only 1,2 and 5).
Test_CFl sets the global variable CFlPos to a value. You
can read the value but you are advised not to change the
value. The following function call to Next_CFl will use
this value to determine the starting position inside
the file.
The 29 (or 20000) bytes are stored on the HEAP. Cfl
releases this bytes from the HEAP before terminating
the function (see chapter on HEAP-mamagement). After
the test all files are closed !
Test_Cfl does not open a DWC file. It only returns 5
as a result of the test. The test is done on extension.
Remarks : See Forc_CFL
=======================================================================
FUNCTION Forc_CFl(CFlNam:STRING,CflAtt:BYTE):BOOLEAN;
Result : BOOLEAN
Input : The name of the compressed file (optional drive and
path) and a valid CFlTyp (1, 2, 3, 4 or 5) or a SFX
file (.COM or .EXE tested with Test_CFl) and a valid
CFlTyp (1,2 or 5).
Description: Call this function to open the file, supplied in 'CFLNAM'.
TxCFI sets all global variables AND sets the CFlTyp to
the value supplied in CFlAtt. Never use other values than
1 (ARC/PAK/PKPAK), 2 (ZIP), 3 (ZOO), 4 (LZH) or 5 (DWC)
for CflAtt. In case of doubt, let Test_CFL work out the
internal structure of the file and use the returned value
as input for CflAtt. This is also the case when working
on SFX files, because CFL needs to know the starting point
inside the SFX-file.
FORC_Cfl will also (re)set the working variables for
DWC-timedate stamps when opening a DWC-file. It will
look at the current values of GMTDif and DaySav and
create a difference out of these variables.
Remarks : Forc_CFl sets the variables CflFil and CflTyp. It uses
the variable CFlPos.
Never use this function for the second time if you have
not used Clos_CFL.
Remarks : See the supplied demo for reference !
=======================================================================
PROCEDURE Clos_Cfl;
Result : -
Input : -
Description: Call this function to close the file you have worked on.
Even if you have opened the file yourself, use this pro-
cedure to close it.
Remarks : OPEN_CFl sets the variables CflPos.
=======================================================================
FUNCTION Next_CFl(VAR DTACFl:CIRTyp):BOOLEAN;
Result : BOOLEAN;
Input : A variable of the type CIRTyp (carried out with TxCFI).
Description: Next_Cfl returns the next valid entry from the compres-
sed file and returns TRUE, or returns FALSE if there is
nothing more to read (E.O.F. on compressed file).
The returned variables are depending on the type of com-
pressed file you work on (see comments in the TYPE de-
claration).
This function always works after a succesfull Open_CFl,
Forc_CFl or LFor_CFl. With LFor_CFI you will get the
first valid entry in the compressed (SFX) file.
Remarks : When you are working on a DWC-file, after the first
call you can obtain the number of files in the DWC
with the variable DWCNuE (never change it);
=======================================================================
FUNCTION HEAP_All:BOOLEAN;
Result : BOOLEAN;
Input : Nothing
Description: When you are incorporation CFL functions in a part of
your program that relies on the HEAP, you can do a heap
allocation before you call TEST_CFL. Test_CFL will then
use this predefined heap-space and will NOT allocate and
deallocate HEAP of its own.
This function should be used when working with sort units
like Turbo Professional's B-Tree Filer MSort.
Remarks : Heap_All sets the variable HeapAl. Heap_All will return
FALSE when no memory is available !
=======================================================================
FUNCTION HEAP_Dal:BOOLEAN;
Result : BOOLEAN;
Input : Nothing
Description: When you have allocated HEAP with HEAP_All, you can
deallocate it with Heap_DAl.
Remarks : Heap_DAl sets the variable HeapAl. Heap_Dal will return
FALSE when there is no HEAP allocated (HeapAL=FALSE).
Notes on usage
───────────────────────────────────────────────────────────────
TxCFI uses fast I/O (blockread) to access the compressed file. Some
types of compressed files have and 'strange' structure. The goal of
the UNIT is to keep memory requirements as low as possible, so an
extra read is preferred over extra memory. I have used this routine
in some of my PD-programs like MTV and MTA and I had no complaints
about the speed !
TxCFI uses extensive tests on probable I/O errors or invalid files.
The routine snatches Int24 from Turbo Pascal and has no problems
with unavailable devices, common I/O errors and so on. In case of
an I/O error, TxCFI returns FALSE from the function-call, so you
can supply every file with a valid extension but with an invalid
format. When you make the assumption that every passed file has a
valid extension (not some exotic variant), you can pass EVERY file
to OPEN_CFL and depending on the returned condition (FALSE or TRUE)
take futher action. When an invalid file (e.g. COMMAND.COM or
TURBO.EXE) is passed to OPEN_CFG, the routine DOES NOT open the file,
so there is no loss in time (only the function-call).
You can also use Test_CFL in cases where one expects compressed files
with alternative extension. Test_CFL does open the file, so consumes
more time.
TxCFI uses 20K of heap and the small amount of 5000 bytes of stack-
space. Please adjust your $M values according to this extra consump-
tion. The heap usage is temporary and only used inside the Test_Cfl
function.
If you are a Turbo Pascal 4.xx user, you can use the supplied T4CFI
unit and keep the T5CFI unit for the moment you are going to upgrade
your current release of Turbo Pascal.
The supplied demo works fine with both releases (4 & 5) of Turbo Pas-
cal.
Heap Management
───────────────────────────────────────────────────────────────
There are some cases where it is forbidden to allocate HEAP when
parts of your program is in progress. This is the case when working
with functions that have their own heap-management. Turbo Profes-
sional's B-tree Filer MSort unit is such an example. Also it is
possible that some functions will take all the HEAP and when you
interface with such function's and you want to call Test_CFL, you
are left in the cold.
CFI carries two function that can help you with this problem. Nor-
maly CFI will allocate and deallocate (GETMEM & FREEMEM) HEAP-space
with every call to Test_CFL. You can force Test_CFl NOT to allocate
HEAP-space, but in that case this space must be reserved beforehand.
You can obtain this result by calling HEAP_All before you enter the
HEAP-critical function's. When you call Test_CFL inside this functions,
no HEAP-space is allocated (this is already done with HEAP_All) and
the remainder of the HEAP is for the critical function.
After the critical function ends, you can call HEAP_DAl to release
the HEAP used by CFI. After the HEAP is deallocated, Test_CFl works
like it normal does, it allocates and deallocates HEAP every time
it is called.
How to recognize a valid compression file
───────────────────────────────────────────────────────────────
If you don't want to wast lots of time and don't want to read the
whole file (a pitty when it isn't a compressed file) there is no
save way to test if a file is compressed with one of the supported
methods or not. This is the way how Test_CFL does its work:
- Test the extension for .DWC, if true, its a DWC-file;
- Read the first 29 bytes of the compressed files;
- If there is an error (file not found) return a 0 (FALSE);
- If pos. 1 contains #26 and pos. 2 does not contain #00 and
there are 29 bytes read, its an ARC compatible compressed
file and return 1;
- If pos. 1/2 contains #80#75, its a ZIP compatible compressed
file and return 2;
- If pos 21/24 contains #220#167#196#253, its a ZOO compatible
compressed file and return 3;
- If pos 3-5 contains -lh and 7 a -, its a LHZ or LZS compressed
file (NOT a giant Suzuki) and return 4;
These tests are extended a lot when testing for SFX-files.
It is possible that this combination of bytes is available in files
that are not compressed files. In that case, don't worry, the first
or next time you call Next_CFL you will get a FALSE situation !
The DWC method is quick and dirty, this is because many I/O has to
be done to test a DWC and it is not possible for DWC to work on
files with another extension than .DWC;
SFX files
───────────────────────────────────────────────────────────────
This release supports SFX files (Self extracting Compression
files). If you have an SFX (ARC (all), PAK, ZIP or LZx) you
can use LTst_CFl and LFor_Cfl to work out the internal format
and let CFI display the files inside the SFX with Next_CFl.
In the supplied demo, you can use the third fase of the program
to list SFX files like PKZ092.EXE, PAK161.EXE and LH113B.EXE.
You can make one yourself and try it out.
Future releases
───────────────────────────────────────────────────────────────
- Including file/archive decriptions in ARC files;
- Yet another compression program ??? Who knows....
Bugs and flaws
───────────────────────────────────────────────────────────────
If you find any bugs, please report them to me or leave a message
(under the name Rob Van.Hoeven (mind the point)) at FIDO-Emmen !
Releases
───────────────────────────────────────────────────────────────
1.01 : First release
2.01 : - Added Test_CFL and Forc_CFL functions to work easy with
variable extensions.
3.01 : - Added LZH (LHarc) support. This is done in a cruel and
dirty way. The original format is, up to this moment,
not available to me.
- DWC files are somewhat supported. Depending on the ex-
tension, CFI detects a DWC file, but is will not look
to the internal structure;
- CFITyp is set to 0 after closing the file (could cause
an error with wrong calling sequences);
- I/O error checking did not work everywhere. Could cause
some strange bugs, fixed;
3.02 : - Changed the TEST_CFl test for ZIP-files because it was
to global to work 99% ok. Some other files start with
just PK. Now also testing the header !
- Changed the original and compressed size in a LZH file,
bug corrected;
4.01 : - DWC internal support;
- Counters for total compressed and uncompressed sizes;
4.02 : - DWC time/date stamps returned incorrect. Added all the
coding to compute the right values;
- DWC timezone changes can be influenced by the user;
4.03 : - TxCFI.TPU made self contained. This means that users with
Turbo Pascal 5.xx don't need the original Turbo Proffesio-
nal routines anymore. It was never intended but TP 5.xx
wants the original included units. TP 4.xx has had no
problems of this kind.
4.04 : - Not a public release (tests for LZS);
4.05 : - Implemented LZS;
5.01 : - Implemented SFX support for ARC (all), PAK, ZIP, LZH
and LZS.
5.02 : - Fixed a bug in SFX support. Not almost 99.99% was
tested ok.
5.03 : - Implemented 'external HEAP-support';
5.04 : Not released, internal usage only;
5.05 : - Implemented a combined test for SFX and NO-SFX.
- Dropped the LFor_CFl and LTst_CFl functions, they
are now included in Forc_Cfl and Test_CFl.
- Added Heap_All and Heap_Dal functions to make exter-
nal HEAP-support really external;
6.01 : - Added code to implement PKZIP release 1.0 imploding
method. Taken from the BETA-release documentation.
No actual PKZIP/PKUNZIP program is available, so this
is implemented from paper;
- Optimized the TEST_CFL function. If extension is COM
or EXE a full (20000 bytes) SFX-test will be done,
if other extension, then a small (1000 bytes) test is
done to see if file contains a false (shifted) header.
Files under 200 bytes are not tested for shifted
headers or SFX-headers.
6.02 : - Changed code to support both LHarc/LZH and LHice/ICE
files when testing on extension. This is changed in
LHarc release 1.14. LHarc V 1.14 is a doubtfull release;
6.05 : - Added support for type 11 (Nogate's Destilled), thus
supporting PAK V 2.0;
- Fixed bug in PKZ 1.00 (imploding) support. Central
directory entries 87,88 and 89 could occur. This was
a trial version, only 86 + general flags are supported.
6.06 : - Fixed a bug where CFI could hang while testing for
an SFX-file. Fixed.
|6.07 : - Fixed a bug in Turbo Pascal 5.5 implementation
Notice
───────────────────────────────────────────────────────────────
Some ideas for this unit came from Philip R. Burns package
PIBCAT17 (ZOO/DWC-files). The formats for ZIP, ARC and PAK came
from the documents supplied with those programs. The format for
LZH/ICE is worked out in a trial on error method.
- ARC is a trademark of SEA;
- PAK is a trademark of NoGate Consulting;
- ZIP is a free extension with thanks to PkWare and Phil;
- ZOO is a trademark of Rahul Dhesi;
- DWC is a trademark of Dean W. Cooper;
- LZH/ICE is a trademark of Haruyasu Yoshizaki
-LZS is a trademark of M.Miki's, H.Okumura and K.Masuyama
|This UNIT is written and compiled with Borland's Turbo Pascal 5.5 and
uses some routines from Turbo Professional 5.01. Everything was tested
with the Turbo Debugger 1.0. The T4CFI.TPU unit is compiled under
Turbo Pascal 4.0. The Turbo Professional routines are self-contained
(you don't need the original units when compiling under TPascal 5.0)
and NOT interfaced outside;
Turbo Pascal is a trademark of Borland International
Turbo Debugger is a trademark of Borland International
Turbo Professional is a trademark of TurboPower Inc.
B-Tree Filer is a trademark of TorboPower Inc.
Sorry for my usage of the English language, it's not my native language
so this can happen.
If you have suggestions, additions or other comments, you can leave a
message, addressed to me (Rob Van.hoeven) at FIDO Emmen.
Support and Registration
───────────────────────────────────────────────────────────────
As mentioned earlier, when you use the UNIT(s), please send me a
postcard or a NetMail message.
When you have troubles, find bugs or have otherwise comments on this
package, please let me know.
You can send a postcard to the address in the header of this documen-
tation, or you can send a netmail <tm> message to:
Rob Van.Hoeven (watch the point !)
National : FIDO Emmen Holland -- 2:500/31
International: QuickBBS International Support Node -- 2:2/100